package com.yanggu.spark.core.rdd.transform.value

import org.apache.spark.{SparkConf, SparkContext}

//sortBy算子
object RDD11_SortBy {

  def main(args: Array[String]): Unit = {

    //1. 创建sparkConf配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")

    //2. 创建spark上下文对象
    val sparkContext = new SparkContext(sparkConf)

    //3. 从内存中创建RDD
    val dataRdd = sparkContext.makeRDD(List[Int](1, 2, 3, 3 ,4, 5, 6), 6)

    //4. sortBy
    //需要传入三个参数。
    //4.1. 可以比较的函数。类似于java的Comparator。定义大小。这里也可以返回一个元祖(a, b, c)。
    //类似于sql的中的按照a desc, b asc等。如果是按照某一个值降序排序, 可以取反
    //4.2. ascendind: Boolean 升序还是降序。默认升序
    //4.3. 分区数
    val value = dataRdd.sortBy(_ * 2.5, ascending = false)

    //5. 打印
    println(value.collect().mkString(", "))

    //6. 释放资源
    sparkContext.stop()
  }

}
